OmniThreadLibrary 3.02 has just been released. It is available via
SVN (http://omnithreadlibrary.googlecode.com/svn/tags/release-3.02)
or as a ZIP archive
(http://omnithreadlibrary.googlecode.com/files/OmniThreadLibrary-3.02.zip).

What is OmniThreadLibrary?
==========================

OmniThreadLibrary is simple to use threading library for Delphi. It's
main "selling" points (besides the price, of course are power,
simplicity, and openess. With just few lines of code, you can set up
multiple threads, send messages between them, process Windows messages
and more. OmniThreadLibrary doesn't limit you in any way - if it is not
powerfull enough for you, you can ignore any part of its "smartness"
and replace it with your own code. If you don't like working with
threads - no problem! You can use high-level primitives like parallel
for, futures and pipelines to introduce parallelism into your
application.

OmniThreadLibrary is an open source project. It lives in the Google
Code and is licensed under the BSD license.

At the moment, OmniThreadLibrary supports Delphi 2007, 2009, 2010, XE,
XE2, and XE3 on the Win32 and Win64 platforms. Currently, there are no 
plans to support older Delphi compilers and .NET. XE2 support is 
limited to windows targets.

Where can I get more imformation?
=================================

Home page: http://otl.17slon.com/
Web discussion forum: http://otl.17slon.com/forum/
Downloads: http://code.google.com/p/omnithreadlibrary/downloads/list
Issue tracker: http://code.google.com/p/omnithreadlibrary/issues/list
SVN checkout instructions:
http://code.google.com/p/omnithreadlibrary/source/checkout
Author's blog: http://thedelphigeek.com
Author's home page: http://gp.17slon.com

Changes since version 3.01
==========================

- New features:
  - Compiles with XE3.
  - Added XE3 packages and test projects.
  - Added Async/Await abstraction
    (http://www.thedelphigeek.com/2012/07/asyncawait-in-delphi.html).
  - Added OnStop overload to Parallel.ForEach that accepts
    'reference to procedure (const task: IOmniTask)'.
  - Added OnStop overload to Parallel.Pipeline that accepts
    'reference to procedure (const task: IOmniTask)'.
  - Implemented TOmniValue.IsRecord.
  - IOmniBackgroundWorker extended with task initializer (Initialize)
    and task finalizer (Finalize).
  - IOmniWorkItem extended with property TaskState.
  - Inlined bunch of TOmniWorkItem methods.

- Bug fixes:
  - Parallel.Join was broken if number of task to be executed was larger
    than number of threads. Thanks to [Passella] for reporting the
    problem.
  - Invalid 'joinState' was passed to the worker task in Parallel.Join 
    if number of tasks to be executed was larger than the number of 
    worker threads. Thanks to [meishier] for reporting the problem.
  - Fixed race condition in task teardown. Big thanks to [meishier] for
    putting together a reproducible test case.
  - ForEach finalizer is called if an exception occurs inside the 
    ForEach task.
  - OtlParallel added to packages. Thanks to [Mason Wheeler] for 
    reporting the problem.
  - OtlDataManager added to packages.
  - Fixed bug in TOmniTaskGroup.TerminateAll - maxWait_ms parameter was 
    ignored.
    Thanks to [morlic] for reporting the problem.
  - Workaround for an internal error in D2009. Thanks to [ToHugie] for 
    reporting the problem and to [Hallvard Vassbotn] for providing a 
    fix.
    http://code.google.com/p/omnithreadlibrary/issues/detail?id=29
  - Fixed various scenarios where Invoke was not working. Thanks to 
    [geskill] for providing report, test case and incremental testing on 
    my partial solutions.
  - XE2 and XE3 design packages were referring to wrong runtime package.
  - TOmniEventMonitor is marked as 64-bit compliant in XE2+.
    Thanks to [M.J. Brandt] for reporting a problem.

- Other changes:
  - Marked IOmniParallelLoop.OnMessage as deprecated (use 
    TaskConfig.OnMessage).

- New demos:
  - 53_AsyncAwait: Demonstration of the new Async/Await abstraction.

- New examples:
  - ForEach output: Demonstrates how to 'flow' ForEach output directly 
    into the main thread which immediately processes the data.
  - Twofish: Parallel implementation of the FishFacts demo.

--
Primoz
[http://thedelphigeek.com]